The present invention relates generally to systems and methods for controlling and monitoring use of computer programs and more specifically to systems and methods for embedded licensing in a distributed computer environment.
The Internet, and particularly the World Wide Web within the Internet, has become a popular vehicle for widespread access to content of nearly arbitrary kinds, among them formatted text, graphics, and interactive programmed content. Associated with various types of content are conventions or languages for representation of the content as strings of bits (or, equivalently, as strings of characters) in network communications. Currently popular representations for web communications include HTML for formatted text, JPEG for images, and JAVA for programs. The CURL Language, recently developed at the Massachusetts Institute of Technology (Curl: A Gentle Slope Language for the Web, M. Hostetter, D. Kranz, C. Seed, C. Terman, S. Ward, MIT Laboratory for Computer Science World Wide Web Journal, Volume II, Issue 2, Spring 1997), is designed to represent a variety of content forms within a single language.
Access to content by a user requires software on that user""s computer (the xe2x80x9cclientxe2x80x9d) which (a) fetches the content, represented in some identifiable language, from either a local storage medium (e.g. CDROM or hard disk) or a remote computer (the xe2x80x9cserverxe2x80x9d) and (b) xe2x80x9cexecutesxe2x80x9d or xe2x80x9cinterpretsxe2x80x9d the fetched representation appropriately. Typically these client operations are performed via a client application called a xe2x80x9cbrowserxe2x80x9d, e.g. Microsoft Internet Explorer (Microsoft Corporation, Redmond, Wash.) or Netscape Communicator (Netscape Corporation, Mountain View, Calif.). These browsers include the capability to interpret several content representations (such as HTML and JPEG), and provide for their extension to accommodate new content types (such as the CURL Language). To access content represented using the CURL Language, for example, a software extension to the browser (a xe2x80x9cplug-inxe2x80x9d) designed to understand the CURL Language would be installed on the client machine. Thereafter, control is passed to the plug-in whenever CURL Language content is encountered, whereupon the plug-in interprets or executes the CURL Language content.
One reason for the success of the web is its promotion of unencumbered communications. An unambiguous identifier of information (e.g., a Uniform Resource Locator or URL) is typically all that is needed to enable access to content, a feature that has promoted the rapid evolution of the web into a rich nexus of interrelated content. While unconstrained access to information is valuable to the growth of the web and the electronic economy, it runs counter to conventional licensing models. Free and easy access to useful web content removes the motivation of those who enjoy its advantages to properly license and contribute revenue to the content supplier because it is difficult to control access and thus charge for information and services. Consequently, typical for-profit publishers of valuable contentxe2x80x94computer programs, timely information, and other informationxe2x80x94forego strict licensing and encourage revenues by promoting an artificial scarcity of the commodity they provide. In the case where a provider supplies content as well as the client software needed to interpret that content (such as a browser plug-in), access restrictions might be used. Such restrictions could be applied to the content itself, to the plug-in, or to both.
Typical access restriction measures in current use tend to impede the open unencumbered communications that are the hallmark of the web. Such restrictions include passwords keyed to the user or passwords keyed to a hardware identification number attached to a specific computer and thus used to unlock the software or content. Password mechanisms can effectively limit the use of the software to a specific individual and/or specific machine but at the same time impede the web""s unencumbered communications and further fail to scale for widespread use. Every user or provider of content must be provided a password to unlock the software or content.
Other mechanisms include removable devices containing a unique license key and adapted to connect to a general-purpose communications port or specific interface. In this method, the software looks for a specific code contained in the removable device each time the software is activated. Again, such a mechanism can effectively limit the use of the software to a specific individual and/or specific machine, but fails to scale for widespread use and thus impedes unencumbered communications.
Networked computer environments provide further licensing challenges. For instance, a user in one client may utilize software running at a second client. Consequently, the terms of the traditional single-computer software license might not properly cover the usage of the software on the network or may unintentionally allow such a usage without additional compensation to the licensor. One solution to this problem is to grant a license to use the software to all of the machines on a network (unlimited site license), or to require a license for each machine (limited site license). While this increases the licensor""s fees, it may also require the licensee to pay more than what is required for the licensee""s needs. In addition, this mechanism requires cooperation from the licensee to contact the licensor as additional nodes are added to the network. Additional non-automated mechanisms are available to control and monitor usage. For example, licensors may obtain the right to periodically audit the licensee""s site to monitor usage, an inefficient and intrusive process.
In a situation where a licensor develops tools used by a licensee to create programs and content for an end-user, a further tension exists. The licensor may want an accurate accounting of the use of the licensed content while the ultimate end-user wants unencumbered access without passwords and locks. The licensee is thus caught between providing the licensor an accurate accounting to determine the license fee while at the same time providing easy access to the end-user. Current mechanisms that satisfy the licensor have an unfavorable impact on the end-user, and vice-versa.
Moreover, the developer of content might wish to encourage multiple levels of licensing to the end-user. The levels of licensing may run from free access to the product (or portions of the product) for certain uses (e.g. for evaluation or non-commercial use) to for-pay access to the product with a fee based on the portions of the product accessed and the number of times accessed. Conventional access restrictions constitute an impediment to free access by users, since such users must typically xe2x80x9cregisterxe2x80x9d with the access control mechanism or deal with similar electronic bureaucracy, and are an impediment to for-pay access because of the overhead required to monitor such licensing forms. Thus, present licensing technologies do not provide a broad mechanism capable of covering such divergent licensing goals.
The invention provides a new and improved licensing method and system for licensing content and access to functions provided by a plug-in, application, applet or any client software operating in a computer. In addition, the invention facilitates the distribution of both revenue and non-revenue generating content on the Internet.
The invention includes a system and method for managing access to functionality provided by a software component or plug-in running on a client computer. The steps executed include maintaining a store of license records for software items that may include programs or modules. Each of the license records includes an identification of a licensee and an associated level of functionality for that licensee. This information is used to define an access policy for the licensee that is used to determine what access is granted to the licensee to the software items.
The client retrieves content for running on the client that requires access to the plug-in in order to operate. The content contains a license form containing either a licensee identity or an operational policy, such as a statement of non-commercial use.
The client scans the content for the license form, and if the license form contains the operational policy, then performing the steps of testing the operational policy to check if it is valid, and if so, allowing the plug-in to operate on the content as determined for that type of operational policy.
If the license form contains a licensee identity, then the client retrieves the license record from the store, and determines an access policy for the licensee based upon at least the information in the licensee record. The client then allows the plug-in to operate on the content to the extent allowed by the access policy.
Thus, in brief, the invention includes a plug-in or application running on a user computer. The plug-in is adapted to access content on a content server. The content includes a special licensing form and the plug-in is further adapted to scan the content for such licensing form.
Depending on the information included in the licensing form, the plug-in determines if the license governing the content is an implicit or explicit license. An implicit license can be validated without contacting any additional servers. An explicit license requires contacting the appropriate licensing server to validate the license. If the license is valid, the content is processed.
The plug-in can be adapted to cache license results in order to minimize the need to contact the license server. The cached result can then be used to validate the license for related content without contacting the server. The cached result can be invalidated by the passage of time, reaching a specified number of accesses, or other reason.
A grace period can be defined allowing processing of content in the case where the user computer cannot contact the license server and there is no appropriate cached license. The grace period can allow for temporary operation until the user computer is back in contact with the license server.
The plug-in can be adapted via the use of a file authentication mechanism to ensure that the content file is not corrupted. In addition, the license form or license server can specify the level of functionality allowed under the license, thus allowing licensing on a module-by-module basis.
The license server can be adapted to hold license records and receive and store access information such as number of accesses, user information, machine information and module information. The license server can then generate usage reports that can be used to determine licensing requirements.
The invention further includes a tool for creation of the license form. The tool can be a stand alone software program delivered to a licensee or a server provided by the licensor and available to the licensee via a communications channel.
All communications and data of the invention may be secured via standard encryption mechanisms, thus providing additional protection.
Therefore, it is an advantage of the invention to support a licensing mechanism by which the provider of software utilized in the interpretation of web content may license the use of that software for commercial purposes without controlling access to either the software or the content.
Further advantages of the invention include the ability to allow noncommercial or other specific use of the software, anonymous use of the software, and unencumbered use of the software.
Additional advantages of the invention allow the licensor to monitor licensed usage, to revoke the license as desired, and to charge fees based upon the usage of the software by the licensed content.
In addition, it is also an advantage of the invention to utilize a plain-text assertion embedded in the content stating that the content is for non-commercial use.
Further advantages of this invention provide for multiple licensors, each administering separate licenses pertaining to interdependent content modules.